﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using middleware.dominio;
using middleware.dominio.negocio;
using middleware.dominio.negocio.exception;

namespace middleware
{
    public partial class VentanaEjecucion : Form
    {
        public VentanaEjecucion()
        {
            InitializeComponent();
        }

        private void VentanaEjecucion_Load(object sender, EventArgs e)
        {
            try
            {
                txtTiempo.Text = Convert.ToString(BusinessFactory.getMiddleware().ObtenerTiempoLectura());
                this.ActualizaTxt();
            }
            catch (BusinessException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnComenzar_Click(object sender, EventArgs e)
        {
            try
            {
                if (BusinessFactory.getMiddleware().EstaCorriendoProceso())
                    MessageBox.Show("El proceso ya se encuentra en ejecución");
                else
                    if (BusinessFactory.getMiddleware().ObtenerTiempoLectura() != 0)
                        BusinessFactory.getMiddleware().ComenzarProcesamiento(); this.ActualizaTxt();
            }
            catch (BusinessException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnFinalizar_Click(object sender, EventArgs e)
        {
            try
            {
                if (!BusinessFactory.getMiddleware().EstaCorriendoProceso())
                    MessageBox.Show("El proceso ya se encuentra detenido");
                else
                    if (BusinessFactory.getMiddleware().ObtenerTiempoLectura() != 0)
                        BusinessFactory.getMiddleware().DetenerProcesamiento(); this.ActualizaTxt();
            }
            catch (BusinessException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnCambiar_Click(object sender, EventArgs e)
        {
            try
            {
                if (!String.IsNullOrEmpty(txtTiempo.Text))
                {
                    if (BusinessFactory.getMiddleware().EstaCorriendoProceso())
                        MessageBox.Show("El proceso se encuentra en ejecución. Debe detenerlo para modificar el tiempo");
                    else
                    {
                        int tiempoNuevo = Convert.ToInt32(txtTiempo.Text);
                        BusinessFactory.getMiddleware().ModificarTiempoLectura(tiempoNuevo);
                    }
                }
            }
            catch (BusinessException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void ActualizaTxt()
        {
            if (BusinessFactory.getMiddleware().EstaCorriendoProceso())
                lblCorriendo.Text = "El proceso se encuentra en ejecución";
            else
                lblCorriendo.Text = "El proceso NO se encuentra en ejecución";
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            Dispose();
        }
    }
}
